package com.cyufeng.blog.controller;

import com.cyufeng.blog.dto.ImagesDto;
import com.cyufeng.blog.service.ImagesService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.util.ArrayList;
import java.util.List;

/**
 * 轮播图
 *
 * @author Cyufeng
 * Data:2018.12.30
 */
@CrossOrigin
@RequestMapping("/blog/images")
@RestController
public class ImagesController {
    @Autowired
    ImagesService imagesService;

    /**
     * 得到所有的图片
     *
     * @return 图片列表
     * @deprecated 方法可以得到一个数据库里面所有启用的图片，但是要控制为5张图片，因为页面上的轮播图是5张图片
     */
    @GetMapping("/getImages")
    public List<ImagesDto> getImg() {
        List<ImagesDto> imgs = imagesService.getImages();
        return imgs;
    }

    /**
     * 得到所有的图片--用于后台操作
     *
     * @return 图片列表
     * @deprecated 方法可以得到一个数据库里面所有启用的图片，但是要控制为5张图片，因为页面上的轮播图是5张图片
     */
    @GetMapping("/getAllImages")
    public List<ImagesDto> getAllImages() {
        List<ImagesDto> imgs = imagesService.getAllImages();
        return imgs;
    }

    /**
     * 改变是否启用
     *
     * @return
     */
    @GetMapping("/setIsEnable")
    public String setIsEnable(@RequestParam("isEnable") Boolean isEnable, @RequestParam("id") int id) {
        return imagesService.setIsEnbale(isEnable, id);
    }

    /**
     * 删除图片
     *
     * @return
     */
    @GetMapping("/deleteImage")
    public String deleteImage(@RequestParam("id") int id) {

        return imagesService.deleteImage(id);
    }


    /**
     * 图片上传
     */
    @RequestMapping("/saveImage")
    public String addImage(@RequestBody MultipartFile file, HttpServletRequest request, HttpServletResponse response) throws Exception {
        System.out.println("上传图片是否为空：" + file.isEmpty());
        if (file != null) {
            String path = null;// 文件路径
            String imgType = null;//图片类型
            String fileName = file.getOriginalFilename();// 原文件名称
            imgType = fileName.indexOf(".") != -1 ? fileName.substring(fileName.lastIndexOf(".") + 1, fileName.length()) : null;
            if (imgType != null) {
                if ("GIF".equals(imgType.toUpperCase()) || "PNG".equals(imgType.toUpperCase()) || "JPG".equals(imgType.toUpperCase())) {
                    // 项目在容器中实际发布运行的根路径
                    String realPath = "/Users/cyufeng/blog-portal-static/static/imgs/";
                    // 自定义的文件名称
                    String trueFileName = String.valueOf(System.currentTimeMillis()) + fileName;
                    // 设置图片存放的路径
                    path = realPath + trueFileName;
                    System.out.println("图片的存放路径为" + path);
                    // 转存文件到指定路径
                    file.transferTo(new File(path)); // 转存而不是写出
                    System.out.println("文件成功上传到指定目录下");
//                    保存到数据库
                    String name = fileName.substring(0, fileName.lastIndexOf("."));//获取除后缀1位的名称
                    imagesService.addImage("../../../static/imgs/" + trueFileName, name);
                } else {
                    System.out.println("请上传GIF、PNG或者JPG格式的文件");
                }
            }
        }

        return "";
    }
}
